Ordeningsoperatoren
OrderBy
De OrderBy
queryoperator sorteert de ingevoerde sequentie door de elementen in de invoersequentie met elkaar te vergelijken volgens een specifieke sleutel.
De volgende code toont het sorteren van een eenvoudige invoerreeks van strings. In dit voorbeeld is de sleutel een property die door de lambda expressie x => x.Name of x => x.Leeftijd
gespecificeerd wordt.
De volgende code rangschikt de personen eerst op naam en daarna op leeftijd:
Personen[] personen = { new Personen { Name = "Jan", Leeftijd = 60 }, new Personen { Name = "An", Leeftijd = 100 }, new Personen { Name = "Peter", Leeftijd = 15 }, new Personen { Name = "Hans", Leeftijd = 11 }, new Personen { Name = "Marijke", Leeftijd = 40 }, new Personen { Name = "Judith", Leeftijd = 20 } }; IEnumerable<Personen> alfabetischOpNaam = personen.OrderBy(x => x.Name); Console.WriteLine("Alfabetische lijst van personen"); foreach (Personen persoon in alfabetischOpNaam) { Console.WriteLine(persoon.Name); } IEnumerable<Personen> alfabetischOpLeeftijd = personen.OrderBy(x => x.Leeftijd); Console.WriteLine("Personen gerangschikt op leeftijd"); foreach (Personen persoon in alfabetischOpLeeftijd) { Console.WriteLine(persoon.Name); }
ThenBy
De ThenBy
queryoperator kan één of meerdere keren na een eerste OrderyBy worden toegevoegd. De ThenBy
operator voegt extra niveaus toe aan het sorteren. In de volgende code worden de Personen eerst per leeftijd en dan alfabetisch geordend.
Personen[] personen = { new Personen { Name = "Jan", Leeftijd = 60 }, new Personen { Name = "An", Leeftijd = 100 }, new Personen { Name = "Peter", Leeftijd = 15 }, new Personen { Name = "Dirk", Leeftijd = 15 }, new Personen { Name = "Hans", Leeftijd = 11 }, new Personen { Name = "Olga", Leeftijd = 11 }, new Personen { Name = "Marijke", Leeftijd = 40 }, new Personen { Name = "Yannick", Leeftijd = 40 }, new Personen { Name = "Judith", Leeftijd = 20 } }; IEnumerable<Personen> alfabetischOpLeeftijdDanOpNaam = personen.OrderBy(x => x.Leeftijd).ThenBy(x => x.Name); Console.WriteLine("Lijst op leeftijd en dan alfabetische op naam:"); foreach (Personen persoon in alfabetischOpLeeftijdDanOpNaam) { Console.WriteLine("{0} {1}", persoon.Leeftijd, persoon.Name); }
OrderByDescending
De OrderByDescending
queryoperator werkt op dezelfde manier als de OrderBy
operator, met dien verstande dat de resultaten worden geretourneerd in de omgekeerde volgorde,
ThenByDescending
De ThenByDescending
queryperator werkt op dezelfde manier als de ThenBy
operator, maar retourneert de resultaten in de omgekeerde sorteervolgorde.